<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        function fn1()
        {
            var a=2;
            var b="abc";
            function fn2()
            {
                console.log(a);
            }
        }
        fn1();
        //函数产生了闭包，所以fn1()执行时，fn2不会被执行

    </script>
</head>
<body>
    <!--
        1.如何产生闭包
        当一个嵌套的内部（子）函数引用了嵌套的外部（父）函数的变量（函数）时，就产生了闭包
        2.闭包到底是什么
        使用chrome调试查看
        理解一：闭包是嵌套的内部函数（绝大部分人）
        理解二：包含被引用变量（函数）的对象（极少数人）
        注意：闭包存在于嵌套的内部函数中
        3,产生闭包的条件
        函数嵌套
        内部函数引用了外部函数的数据（变量/函数）
    -->
    <img src="../../IMG/04-01.闭包.png">
</body>
</html>